Azure Load Testing でサーバーサイドメトリックを使ったテスト抽出条件を設定してみた
いわさです。
先月のことですが、Azure Load Testing でサーバーサイドメトリックを使ってテスト失敗条件を設定する機能が GA となりました。
一般的にはエラーレートやエンドツーエンドのレイテンシーで判定することが多いと思いますが、私の場合はそれらに加えて特定のサーバーリソースの使用率が一定以下であることを条件に含めたい場合がありました。
Azure Load Testing のサーバーサイドメトリックを使うという前提にはなりますが、今回の機能である程度カバー出来そうなので使い方などを紹介します。
Azure Load Testing とサーバーメトリック
まず、Azure Load Testing は JMeter ベースのテストをクラウド上で実行出来るフルマネージドなサービスです。
JMeter スクリプトをアップロードすることも出来ますが、Azure ポータル上から UI ベースでテスト条件を入力することも出来ます。
テストを作成して実行すると次のような結果画面を得ることが出来ます。
上記は 5 分間のテストなのですが、テストが問題なく完了し、250 ユーザーが線形にアクセスし、合計 13 万リクエストが行われ、レスポンスが平均 500 ミリ秒程度で、エラー無しということが確認出来ます。
デフォルトでは有効化されていないのですが、上記クライアントサイドメトリックに加えて、サーバーサイドメトリックもこちらに表示することが出来ます。
結果画面の一番下、あるいはメニューのアプリコンポーネントから構成することが出来ます。
今回のテスト対象は App Service で稼働している Web アプリケーションだったのですが、アプリコンポーネントに App Service と App Service プランを含めてみました。
そうすると次のようにテスト実行中の各リソースのメトリクスを同じように表示することが出来ます。
サーバーサイドエラーも発生しておらず、CPU 使用率は最大で 40 % 程度、メモリ使用率は 80 % 弱であることがわかります。
テスト抽出条件にサーバーサイドメトリックを指定する
冒頭紹介したアップデートは、要は上記サーバーサイドメトリックを条件にテストの成功・失敗を判定させることが出来るというものです。やってみましょう。
設定自体は簡単なのですが、前提として Load Testing にアタッチされているマネージド ID が対象リソースの監視権限を持っている必要があります。
テスト構成側では次のようにメトリック参照 ID としてマネージド ID を設定します。
監視対象リソース側では「監視閲覧者」ロールを割り当てします。
あとは先程のテスト構成画面の監視タブでまずはサーバーリソースを追加します。
そしてテスト抽出条件の「サーバー側のメトリック」にて監視対象メトリックや集計方法・しきい値と条件を指定します(複数指定可能)
ここでは試しに「CPU 使用率の平均が 20 % 以上であること」を条件に設定してみました。
テストを実行して見ると結果は失敗となりました。
エラーレートは 0 % だったのですが、平均 CPU 使用率が 33.38 % となり、しきい値を上回ったためにテスト結果が失敗となったことが確認出来ます。良いですね。
「メトリック参照 ID は、ロード テスト リソースで有効になっていません」が発生
Azure 公式ドキュメントの手順によると、システム割り当て ID とユーザー割り当て ID のどちらも使えるはずなのですが、ポータル上からテスト構成を行う際に本日時点ではなぜかユーザー割り当て ID でのみ成功します。
システム割り当て ID を使うと次のようにポータル上で入力エラーとなります。
仕様通りでは無さそうな気がするのでいずれ改善されそうな気がしますが、本日時点でうまく行かなかった方はユーザー割り当て ID で試してみてください。
さいごに
本日は Azure Load Testing でサーバーサイドメトリックを使ったテスト抽出条件を設定してみました。
特に Azure 上でアプリケーションをホスティングしている場合は使いやすい機能だと思いますので、ぜひ試してみてください。